/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  dev
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    format      ascii;
    class       dictionary;
    location    "constant";
    object      dynamicMeshDict.sixDoF;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

mover
{
    type            motionSolver;

    libs            ("libsixDoFRigidBodyMotion.so");

    motionSolver        sixDoFRigidBodyMotion;

    sixDoFRigidBodyMotionCoeffs
    {
        patches         (floatingObject);
        innerDistance   0.05;
        outerDistance   0.35;

        centreOfMass    (0.5 0.45 0.35);

        // Cuboid dimensions
        L               (0.3 0.2 0.5);

        // Density of the solid
        rhoSolid        500;

        // Cuboid mass
        mass            #calc "$rhoSolid*cmptProduct($<vector>L)";

        // Cuboid moment of inertia about the centre of mass
        momentOfInertia #calc "$mass*(tensor::one-tensor::I)&cmptSqr($<vector>L)/12";

        report          on;
        accelerationRelaxation 0.7;

        solver
        {
            type Newmark;
        }

        constraints
        {
            // fixedPoint
            // {
            //     sixDoFRigidBodyMotionConstraint point;
            //     centreOfRotation (0.5 0.45 0.1);
            // }

            fixedLine
            {
                sixDoFRigidBodyMotionConstraint line;
                centreOfRotation (0.5 0.45 0.1);
                direction (0 1 0);
            }

            fixedAxis
            {
                sixDoFRigidBodyMotionConstraint axis;
                axis (0 1 0);
            }
        }
    }
}


// ************************************************************************* //
